package com.cskaoyan.javase.oop1._7exercise._1pvz;

/**
 * 植物大战僵尸
 * 用面向对象的思想模拟植物大战僵尸
 *
 * 很明显,这里需要两个类:
 *      1.僵尸类
 *      2.植物类
 * 这里我们分别创建僵尸类(Zombie)和植物类(Plant),然后将Demo作为测试类
 *
 * 在这个案例中,我们主要去模拟对象之间的交互,实际开发中,两个对象互相依赖,互相持有引用,还是很少见的
 * 但是某个对象,需要依赖于另外一个对象,还是很常见的.
 *
 * 扩展:
 *     实际开发中,我们一般都使用框架来创建和管理对象
 *
 * @since 17:05
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 创建对象,准备开始游戏
        Plant p = new Plant("豌豆射手", 1000, 75, 300);
        Zombie z = new Zombie("铁桶僵尸", 2000, 100, 100);
        // 赋值,互相持有引用的过程
        p.plantZ = z;
        z.zombieP = p;

        System.out.println("------Game Start----");
        z.move();
        p.attack();
        z.beAttacked();
        System.out.println("经过长途跋涉,僵尸终于接近了植物!");
        z.attack();
        p.beAttacked();
        System.out.println("虽然你努力了,但是僵尸还是攻破了你的后花园!");
        z.eat();
        System.out.println("------Game Over----");
    }
}
